[리팩터링] 개발 요구사항 (게시판 프로젝트)
실행 환경
같은 폴더의 “[리팩터링] 게시판 프로젝트 아키텍처” 노트에 명시된 스택 기준 — Spring Boot 3.3.5, Java 17, H2 Database, Thymeleaf.
프로젝트를 시작하며
개인 프로젝트로서 그동안 학습한 내용을 실제로 사용해보고자 게시판 프로젝트를 진행한다. 이론적으로 배운 내용도 직접 사용해보고 왜 사용해야 하는지 이해해야 실질적인 학습이 된다고 판단하여, 이번 기회에 학습 내용을 적용해보고 그 이유를 탐구하고자 한다.
요구사항을 정리하는 이유
개발 주제만 정하고 머릿속으로 대략적인 설계만 그린 채 시작하는 경우, 단기 프로토타입이라면 빠른 개발에 이점이 있지만 지속적으로 리팩토링해야 하는 프로젝트에서는 방향성이 흔들리기 쉽다. 이를 방지하기 위해 이번 프로젝트는 요구사항 정의부터 진행한다.
요구사항
- 일반적인 요구사항 정의서 양식 중 하나를 채택하여 작성한다.
- “번호, 역할, 구분, 기능명, 상세 설명, 비고” 항목으로 표를 구성한다.
| 번호 | 역할 | 구분 | 기능명 | 상세 설명 | 비고 |
|---|---|---|---|---|---|
| 1 | 공통 | 예외처리 | 에외처리 페이지 | 404, 502, 404 에러에 대해서 페이징 처리를 진행하여 사용자들의 오류를 인식 | |
| 2 | 회원 | 로그인 | 로그인 | 인증받은 사용자만이 접속을 진행하여 웹페이지내에서 활동이 가능 | 로그인을 하지 않으면 커뮤니티 참가 불가, 필수적 처리,로그인 인증시간:1시간 |
| 3 | 회원 | 로그인 | 로그아웃 | 로그아웃을 진행시에 인증을 소멸하며, 다시 로그인이 진행되도록 설정 | |
| 4 | 회원 | 회원관리 | 회원가입 | 로그인을 하기위해서 회원으로 등록하는 과정으로서 필수적인 데이터입력을 통해 회원을 저장 | 회원 가입시의, id와 비밀번호, 이름은 필수적으로 입력을 받아야함(id에는 특수문자를 제외, 이름의경우 영문/한글만 가능) |
| 5 | 회원 | 회원관리 | 회원수정 | id와 이름, 비밀번호 및 주소를 변경할 수 있다 | 작업진행예정 (로그인 아이디도 수정가능하게 변경) |
| 6 | 회원 | 회원관리 | 회원탈퇴 | 회원 탈퇴시에, 작성했던 글의 경우도 자동으로 삭제가 진행 | 작업진행예정 (추가해야함) |
| 7 | 게시판 | 게시글 | 글 조회 | 마이페이지에서는 본인의 글들의 리스트들이 보이게 하고, 게시판에서는 모든 사용자들의 글이 조회가 되게 설정 | |
| 8 | 게시판 | 게시글 | 글 삭제 | 글 삭제의 경우, 마이페이지에서 작업이 가능하고 삭제 후에는 바로삭제되는 것이 아닌, 임시 휴지통에 들어가게 되고 복구 및 영구삭제 가능 | 영구삭제의 경우, 기간이 소요되면 삭제가 진행 또는 바로삭제시 영구삭제 (추가 필요) |
| 9 | 게시판 | 게시글 | 글 수정 | 글의 제목, 본문, 첨부파일이 수정이 가능하고, 첨부파일의 경우 삭제할경우 서버에서는 바로 삭제되며, 다시 저장해야함 | 첨부파일 삭제 (리팩터링 필요) |
| 10 | 게시판 | 게시글 | 글 작성 | 글의 제목, 본문, 첨부파일 글쓰기 가능 | 첨부파일의 크기 제한 필요,본문의 길이 제한 (최대 1000자이내)글의 제목의 경우 (최소 50자) |
| 11 | 게시판 | 게시글 검색 | 게시글 검색 | 제목 및 글쓴이, 내용을 기준으로 검색이 가능 | |
| 12 | 게시판 | 게시글 조회 수 | 게시글 조회 개수 | 한페이지에 게시글의 경우, 30/50/100개 기준으로 설정이 가능하며, 기본 50개의 기준으로 확인 가능 | 추가필요 |
요구사항 정의서 작성 후 느낀점
개발 완료 후 리팩토링을 진행하려 했을 때 어디부터 수정해야 할지 파악이 어려웠던 경험이 있었다. 이를 계기로 요구사항을 처음부터 다시 정리해보니, 빠뜨렸던 부분이 드러났고 구현 방향도 명확해졌다.
요구사항을 먼저 명확히 정리하고 개발에 들어가면 불필요한 더미 코드를 줄일 수 있고, 기술 스택을 사용해보는 것 자체가 목적이 아니라 프로젝트에 필요한 기술을 적재적소에 선택하는 것이 더 중요하다는 점을 확인할 수 있었다.
관련 문서
- (학습/프로젝트/토이프로젝트/게시판 프로젝트) [기능구현#3] 로그인 기능 — 요구사항 중 로그인/로그아웃 기능을 구현한 문서
- (학습/프로젝트/토이프로젝트/게시판 프로젝트) [기능구현#4] 예외처리 — 요구사항 중 예외처리 기능을 구현한 문서
- (학습/프로젝트/토이프로젝트/게시판 프로젝트) [리팩터링] Session을 통한 로그인 처리 — 요구사항의 로그인 기능을 세션 저장소 방식으로 리팩터링한 문서
- (학습/프로젝트/토이프로젝트/게시판 프로젝트) [트러블 슈팅] 로그인 인증 관련 문제 — 요구사항의 로그인 기능 구현 중 발생한 인증 문제를 다루는 트러블슈팅 문서